package site.wlwsjsx.iot_backend.service;

import site.wlwsjsx.iot_backend.dto.LabWorkstationStatsDTO;
import site.wlwsjsx.iot_backend.entity.LabInfo;

import java.util.List;

/**
 * 实验室信息服务接口
 */
public interface LabInfoService {

    /**
     * 根据ID查询实验室信息
     *
     * @param id 实验室ID
     * @return 实验室信息对象
     */
    LabInfo findById(Integer id);

    /**
     * 查询所有实验室信息
     *
     * @return 实验室信息列表
     */
    List<LabInfo> findAll();

    /**
     * 新增实验室信息
     *
     * @param labInfo 实验室信息对象
     * @return 受影响的行数
     */
    int save(LabInfo labInfo);

    /**
     * 更新实验室信息
     *
     * @param labInfo 实验室信息对象
     * @return 受影响的行数
     */
    int update(LabInfo labInfo);

    /**
     * 删除实验室信息
     *
     * @param id 实验室ID
     * @return 受影响的行数
     */
    int deleteById(Integer id);

    /**
     * 分页查询实验室列表
     *
     * @param pageNum  页码（从1开始）
     * @param pageSize 每页大小
     * @return 分页后的实验室信息列表
     */
    List<LabInfo> findByPage(int pageNum, int pageSize);

    /**
     * 查询实验室总数
     *
     * @return 实验室总记录数
     */
    Long countAll();

    /**
     * 根据实验室代码查询实验室ID
     *
     * @param labCode 实验室代码
     * @return 实验室ID
     */
    Integer findIdByLabCode(String labCode);

    /**
     * 查询指定实验室的工位统计信息
     *
     * @param labId 实验室ID
     * @return 实验室工位统计信息
     */
    LabWorkstationStatsDTO getWorkstationStats(Integer labId);
}
